import axios from 'axios'
import { getToken } from '@/utils/auth'
import { ElMessage } from 'element-plus'

// 创建axios实例
export const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // api的base_url
  timeout: 15000 // 请求超时时间
})


//  /* 获取单个axios单元 */
//  getCoreAxios(env, domain, path, dataToken) {
//   var store = env.store ? 'store' : '$store'
//   return env.$axios.post(domain + path, env.$qs.stringify(dataToken), {
//     headers: {
//       'Content-Type': 'application/x-www-form-urlencoded',
//       cookie_user_id: encodeURIComponent(env[store].state.uid || '0'),
//       zjskauth: env.$tools.getZJSKAUTH(env[store].state.uid || '0', domain + path),
//       login_guid: env[store].state.guid || '0'
//     }
//   })
// },
// /* 获取准备发送的axios列表 */
// getDataAxios(env, domain, path, data) {
//   var dataAxios = []
//   for (var i = 0; i < data.length; i++) {
//     dataAxios.push(
//       this.getCoreAxios(env, domain[i], path[i], {
//         data: JSON.stringify(data[i]),
//         token: env.$tools.getToken(data[i])
//       })
//     )
//   }
//   return dataAxios
// },

// request拦截器
service.interceptors.request.use(
  config => {
    // config.headers['Content-Type'] = 'application/json'
    // 部分外部接口是不需要token的,不需要添加头（会暴露token信息给其他服务）
    // const { isNotNeedToken } = config

    // if (!isNotNeedToken) {
    //   config.headers['X-TH-TOKEN'] = getToken()
    // } else {
    //   delete config.isNotNeedToken
    // }

    config.headers = {
      'Content-Type': 'application/x-www-form-urlencoded',
      cookie_user_id: encodeURIComponent(env[store].state.uid || '0'),
      zjskauth: env.$tools.getZJSKAUTH(env[store].state.uid || '0', domain + path),
      login_guid: env[store].state.guid || '0'
    }

    return config
  },
  error => {
    console.log(error)
    Promise.reject(error)
  }
)

// response拦截器
service.interceptors.response.use(
  response => {
    const { code, data, msg } = response.data
    if (code === '0000') {
      return data === null ? true : data
    } else {
      ElMessage({
        message: msg,
        type: 'warning',
        duration: 5 * 1000
      })

      return false
    }

  },
  error => {
    return Promise.reject(error)
  }
)

export default service
